// map遍历
let map = new Map(
    [
        ["name","Hydra"],
        ["age",35],
        ["sex","男"]
    ]
);

// 通过键遍历：keys()方法：获取所有的键的伪数组
let keys = map.keys();
for (let key of keys) {
    console.log(key," = ",map.get(key));
}

// 遍历值，values()方法：获取所有的值的伪数组
console.log("----------values()----------------")
let values = map.values();
for (let value of values) {
    console.log(value);
}

// map提供了forEach方法
console.log("----------forEach----------------")
map.forEach((v,k) => {
    console.log(v," = ",k);
})

console.log("----------for...of循环----------------")
// map自身也是一个伪数组对象，所以可以使用for...of循环
// 遍历出来的是键值对数组（第一位是键，第二位是值）
for (let v of map) {
    console.log(v[0]," = ",v[1]);
}

// 超前知识，Map类的遍历方法同样也是装载在固定的系统常量上
let fun = map[Symbol.iterator];
console.log("fun =",fun);
// 通过上面的代码知道，map获取可遍历对象的方法名称是entries()
console.log("----------entries()----------------")
// entries()返回，可遍历对象伪数组，键值对数组（第一位是键，第二位是值）
for (let v of map.entries()) {
    console.log(v[0]," = ",v[1]);
}

// Set => WeakSet：
// Map => WeakMap：
// 使用WeakSet和WeakMap存储的数据，是会被垃圾回收机制回收的（弱引用）。它们不能够通过遍历访问元素。